Massively parallel multiprocessors are computers with hundreds or even thousands of processors. One of the main problems in using such machines is how to implement interactions between a running program and a user, and specifically, how to implement terminal input and output (I/O) of text information. Textual input is complicated by the fact that the user might need to control the routing of the typed input to a certain processor. Textual output can be a problem because the user might be flooded by independent output streams from all the processors, which might number in the hundreds or even thousands of processors. Regrettably, humans by nature can only concentrate on one data stream at a time. Most parallel processing systems do not provide any special support for terminal I/O. Hence when many processors generate output, these output streams are interleaved by the system and presented to the user as one stream. If this is the case, the programmer must add processor identification tags to the outputs, and the user must then sift through the output to search for those parts that were generated by a particular processor. FIG. 1 illustrates such a conventional interleaved text output stream with output in uppercase and input in lower case.
Input requires even more work. When many processors request input, they are served in an unspecified order. Therefore the programmer must designate a particular processor that will receive all the user text input. That particular processor must then send the user text data to the relevant processor according to instructions received from the user as part of the input.
In the Express system marketed by ParaSoft Corp., the terminal I/O problem is reduced to some extent by limiting the semantics of I/O so as to reduce the number of possible I/O patterns. For example, both input and output can be done in "single" mode or in "multi" mode. In the case of output, single mode means that all the processors must output exactly the same text. This is checked by the system, and then only one copy of the output is displayed to the user. For input, it means that all the processors get copies of the same thing. Output in multi mode means that each processor buffers its output internally, until they all agree to "flush". The outputs from the different processors are then displayed to the user one after the other, according to the numerical order of the processors. For input, multi means that the input requests are serviced in sequence one after the other. A major drawback of this approach is that it limits the patterns of I/O, and more specifically that it requires that the processors always synchronize in order to perform I/O.
An alternative approach is described by J. E. Lumpp et al. in "CAPS: A Coding Aid for PASM," Comm. ACM, Vol 34, No. 11, pp. 104-117 (November 1991), where separate windows are provided to all processors in a partition. While this decouples the I/O operations of different processors, it does not scale up very well for a large number of processors in a partition. If the number of processors is large (say a hundred processors in a partition), it is clearly very awkward to manage the display screen (having a hundred windows). The situation becomes unmanageable for a massively parallel partition that might contain thousands and even potentially tens of thousands of processors.
While graphical user interfaces have been provided for a user to monitor and debug a parallel program, typically in an analysis phase done after the execution phase in which monitored data is collected, no serious attention has been given yet to the problem of providing graphical support to the user during the time that a parallel program is running for text I/O at a user terminal.